<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../Vue学习/vue.js"></script>
</head>

<body>
    <!-- 子传父**
            自定义事件：
            当子组件需要向父组件传递数据时需要通过自定义事件实现
            v-on不仅仅用于监听dom事件，也可以用于监听组件的自定义事件 -->
    <!-- 流程
            在子组件中通过$emit()来触发事件
            在父组件中通过v-on来监听子组件事件
            **需要自定义实现实现子组件传递数据给父模板**
        -->
    <!-- 模拟菜单栏切换数据 第一次页面没显示数据也没报错    menu是关键字 换成aaa-->

    <div id="app">
        <!-- 3.使用     触发后调用父组件的方法 
            给hello绑定一个方法 调参数的时候可以不用加括号-->
        <aaa @hello="getdata"></aaa>
    </div>
    <!-- 1.声明 -->
    <template id="t1">
        <div>
          <p>菜单</p>
          <!-- 模拟切换数据  点击按钮触发事件 hello被触发-->
          <button @click="abc()">家用电器</button>
        </div>
      </template>
    <script>
        // 2.注册
        Vue.component("aaa", {
            template: "#t1",
            data() {
                return {
                    mid: 1001
                }
            },
            methods: {
                abc: function() {
                    //alert(this.mid);
                    //将mid传给父组件（vue）：通过触发自定义的事件将数据传递出去
                    //emit 发出的意思
                    this.$emit("hello", this.mid); //参数1：自定义事件的名字
                }
            }
        });
        new Vue({
            el: "#app",
            methods: {
                getdata: function(mid) {
                    console.log(mid);
                }
            }
        });
    </script>
</body>

</html>